//
//  AddressBook.m
//  OC05_NSArray_NSDictionary_NSSet
//
//  Created by Scott on 16/3/2.
//  Copyright © 2016年 Rain. All rights reserved.
//

#import "AddressBook.h"

@implementation AddressBook

#pragma mark - 重写初始化
/** 目的: 属性字典进行初始化. */
- (instancetype)init {
    
    self = [super init];
    if (self) {
        _mDic = [NSMutableDictionary dictionary];
        
#if 0   /** 思路一: 初始化字典同时, 里面添加了26个键值对. */
        // for循环创建26个键值对.
        for (char c = 'A'; c <= 'Z'; c++) {
            
            // 创建数组.
            NSMutableArray *mArr = [NSMutableArray array];
           
            // 创建key
            NSString *key = [NSString stringWithFormat:@"%c", c];
            
            // 核心API. 添加键值对.
            [_mDic setObject:mArr forKey:key];
        }
        
#endif
        
        
    }
    
    return self;
}

#pragma mark - function
- (void)addContact:(Contact *)contact {
    
#if 0 // 第一种解决方案:
    if (!self.mDic) {
        self.mDic = [NSMutableDictionary dictionary];
    }

#endif

    // 第二种解决方案: 重写init方法.
    
    
    
    // 1. 取出联系人首字母(即组名).
    NSString *groupName = contact.groupName;
    
    // 2. 组名作为key, 在_mDic中找出对应的数组.
    NSMutableArray *mArr = [self.mDic objectForKey:groupName];
    
    // 3. 向数组中添加联系人对象.
    
    // 判断数组是否存在, 如果存在, 直接添加联系人对象, 如果不存在, 创建数组,然后添加联系人.
    if (mArr == nil) {
        mArr = [NSMutableArray array];
        [mArr addObject:contact];
        
        [self.mDic setObject:mArr forKey:groupName];
    
    } else {
        
        [mArr addObject:contact];
    }
    
}

- (void)viewAllContact {
    
    // 遍历字典, 获取每一个数组.
    
    
    // 遍历数组, 获取每一个联系人对象.
    
       //
    
}










@end
